@echo off
echo ================================
echo    启动考试管理系统服务
echo ================================

:: 设置变量
set NGINX_DIR=C:\nginx
set PROJECT_DIR=%~dp0
set BACKEND_DIR=%PROJECT_DIR%backend

:: 检查Nginx是否存在
if not exist "%NGINX_DIR%\nginx.exe" (
    echo 错误: 未找到Nginx，请先运行部署脚本
    pause
    exit /b 1
)

:: 启动后端服务
echo 启动后端服务...
cd /d "%PROJECT_DIR%"

:: 检查PM2是否可用
call pm2 --version >nul 2>&1
if errorlevel 1 (
    echo 使用普通方式启动后端服务...
    cd /d "%BACKEND_DIR%"
    start "考试系统后端" cmd /k "npm start"
) else (
    echo 使用PM2启动后端服务...
    call pm2 start ecosystem.config.json
    if errorlevel 1 (
        echo PM2启动失败，使用普通方式启动...
        cd /d "%BACKEND_DIR%"
        start "考试系统后端" cmd /k "npm start"
    ) else (
        echo ✓ PM2已启动后端服务
    )
)

:: 等待后端启动
echo 等待后端服务启动...
timeout /t 5 /nobreak > nul

:: 启动Nginx
echo 启动Nginx...
cd /d "%NGINX_DIR%"
nginx.exe

:: 检查服务状态
echo.
echo ================================
echo 检查服务状态...
echo ================================

:: 检查Nginx进程
tasklist /fi "imagename eq nginx.exe" | find "nginx.exe" > nul
if errorlevel 1 (
    echo 警告: Nginx可能未正常启动
) else (
    echo ✓ Nginx已启动
)

:: 检查后端端口
netstat -an | find ":3000" | find "LISTENING" > nul
if errorlevel 1 (
    echo 警告: 后端服务可能未正常启动
) else (
    echo ✓ 后端服务已启动
)

:: 显示PM2状态（如果可用）
call pm2 --version >nul 2>&1
if not errorlevel 1 (
    echo.
    echo PM2进程状态:
    call pm2 status
)

echo.
echo ================================
echo 服务启动完成！
echo ================================
echo 访问地址:
echo 管理员前端: http://localhost/
echo H5移动端: http://localhost/h5/
echo 后端API: http://localhost/api/
echo 健康检查: http://localhost/health
echo.
echo 按任意键打开管理员界面...
pause > nul
start http://localhost/

echo.
echo 如需停止服务，请运行 stop-services.bat
pause
